package main

import (
	"fmt"
	"time"
)

func main() {
	ch := make(chan int)
	quit := make(chan bool)

	go sl(ch, quit)

	var i int
	for ; i < 7; i++ {
		time.Sleep(2 * time.Second)
		ch <- i
	}
	<-quit //如果读出数据，说明超时,程序该退出了
}

//专门用来判断程序是否超时
func sl(ch <-chan int, quit chan<- bool) {
	for {
		select {
		case num := <-ch:
			fmt.Println("读到：", num)
		case <-time.After(5 * time.Second):
			fmt.Println("程序超时了")
			goto lable
		}
	}
lable:
	fmt.Println("程序退出了")
	quit <- true //如果超时了，则在 该通道写入数据
}
